package lzyc.pointsManagement.business.notice.service;

import lzyc.pointsManagement.business.notice.domain.NoticeInfo;
import lzyc.pointsManagement.business.userdept.domain.SysUserDept;

import java.util.List;
import java.util.Optional;

/**
 * (NoticeInfo)表服务接口
 *
 * @author yangyang
 * @since 2024-03-10 17:02:24
 */
public interface NoticeInfoService {

    /**
     * 通过ID查询单条数据
     *
     * @param noticeid 主键
     * @return 实例对象
     */
    NoticeInfo queryById(String noticeid);

    /**
     * 查询多条数据
     *
     * @param offset 查询起始位置
     * @param limit 查询条数
     * @return 对象列表
     */
    List<NoticeInfo> queryAllByLimit(int offset, int limit);

    /**
     * 根据条件分页查询公告数据
     *
     * @return 对象列表
     */
    List<NoticeInfo> queryAll(NoticeInfo noticeInfo);

    /**
     * 新增数据
     *
     * @param noticeInfo 实例对象
     * @return 实例对象
     */
    int insert(NoticeInfo noticeInfo);

    /**
     * 修改数据
     *
     * @param noticeInfo 实例对象
     * @return 实例对象
     */
    int update(NoticeInfo noticeInfo);

    /**
     * 通过主键删除数据
     *
     * @param ids 主键
     * @return 是否成功
     */
    int deleteById(String ids);

    /**
     * 当最新动态未读时，获取最新动态列表
     * @return
     */
    Optional<Object> getUnread();

    /**
     * 获取未读用户列表
     * @param noticeID
     * @return
     */
    List<SysUserDept> userUnread(String noticeID);

    /**
     * 获取已读用户列表
     * @param noticeID
     * @return
     */
    List<SysUserDept> userRead(String noticeID);
}